// 以下是Go语言注释的中文翻译：
// 
// ```
// 版权所有 magesfc bright.ma
//
// 根据 Apache 许可证，版本 2.0（“许可证”）授权；
// 除非遵守许可证，否则您不能使用此文件。
// 您可以在以下网址获取许可证的副本：
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// 除非适用法律要求或书面同意，否则根据许可证分发的软件
// 按“原样”分发，不附带任何明示或暗示的保证或条件。
// 有关特定语言管理权限和限制的信息，请参阅许可证。
// ``` 
// 
// 请注意，这种翻译保持了原文的结构和格式。
// md5:40dea2628d59d63b

package gitee

import (
	"strconv"
	"time"
)

// Timestamp 表示可以从 JSON 字符串反序列化得到的时间，该字符串的格式可以是 RFC3339 或 Unix 时间戳。这是必要的，因为 GitHub API 在表示时间时是不一致的。所有导出的时间.Time 方法都可以在 Timestamp 上调用。
// md5:5019c5de9a334a02
type Timestamp struct {
	time.Time
}

func (t Timestamp) String() string {
	return t.Time.String()
}

// UnmarshalJSON 实现了 json.Unmarshaler 接口。
// 时间应为 RFC3339 或 Unix 格式。
// md5:e5dfc28b3810b2a2
func (t *Timestamp) UnmarshalJSON(data []byte) (err error) {
	str := string(data)
	i, err := strconv.ParseInt(str, 10, 64)
	if err == nil {
		t.Time = time.Unix(i, 0)
		if t.Time.Year() > 3000 {
			t.Time = time.Unix(0, i*1e6)
		}
	} else {
		t.Time, err = time.Parse(`"`+time.RFC3339+`"`, str)
	}
	return
}

// 当然，以下是Go语言注释的中文翻译：
// 
// ```go
// Equal 报告根据 time.Equal 方法 t 和 u 是否相等
// ```
// 
// 这段注释说明了`Equal`函数的功能，即判断两个时间值`t`和`u`是否相等，比较依据是`time.Equal`方法。 md5:504354cbba561495
func (t Timestamp) Equal(u Timestamp) bool {
	return t.Time.Equal(u.Time)
}
